Process Engine

Understanding list-based processes

Another common pattern in iMIS is the situation in which there is a list of objects (1-n), where you would like a particular process to be performed across the list. Examples of this pattern:

List

<—>

Process

Template

Subscription Group

IQA Query

Individual person

Print a Crystal report

Report.rpt

Print an HTML Report

XSL template

Print Labels

Labels.rpt

Send an e-mail

Letter template

Send best available of: report, fax, or e-mail

Customer parameters, report/letter templates

Create a subscription group

Group, role, etc.

Register people for a event

Event, standard functions

Transmit to another site

Custom parameters

Add list to a marketing campaign

Campaign information

Render a web roster

XSL Template

Exchange Export

Custom parameters

Specialized exports

As Needed

Though there are many occurrences of this pattern, perhaps it would be helpful to isolate our study of this problem to the single situation of an ad hoc query tool. Typical tasks would be needing to:

■    create a query that selects a particular group of customers

■    send something to the list: perhaps an e-mail, a letter, a fax, or add them to a marketing campaign (a subscription group)

■    name or edit our own letter or e-mail template

■    schedule for subsequent execution

We would also like to be able to carry out these types of processes over time on or to new types of processes, without having to update our query selection tool constantly.

Process Engine services

Our implementations that deal with this pattern are known as Process engines. Process engines are generally services, encapsulated in objects that are subclassed upon the base Process Engine.

Process Engines must inherit the base process engine class and provide a few basic services (methods).

■    On demand, they must supply a visual template editor which is subclassed from the Process Engine Template base class. The template editor interacts to select or define a template specific to the type of process. For instance:

□    Crystal reports template editor allows a user to specify the location of a crystal report and any parameters that will be needed to execute the report.

□    Mail merge process engines specify or define on the fly a mail-merge template.

□    A multi-output process engine may specify the rules about when to choose which media type and what letter templates will be used. (A multi-output process engine is an application that receives an initial input then delegates subsets of the input list downstream to other process engines.)

■    Provides standard methods to execute a process, monitor progress, log errors, and report results.

Process Engine objects are frequently bound to query objects. Template Process Engine objects (such as a process engine for Crystal Reports but no report specified), and specific process engines (such as a process engine for a specific Crystal report), are generally persisted in document libraries with or without bound query objects that, in term, provides a catalog of available processes to users and administrators. In fact, process engines bound to query objects present a major part of the iMIS application to user, especially for the standard and ad hoc reports users use continuously.

Process Engine objects with bound query objects are frequently queued as tasks within a workflow for subsequent execution. Multiple process object tasks can be included into a single workflow for report sets or multi-step processes.

Example Process Engines

■    Crystal reports

■    XSL/HTML reports

■    E-mail system

■    Word Merge

■    Create subscription group from query

■    Add people to marketing campaign (same as above)

■    Register people from query

■    Multi-output process engine

Uses for Process Engines (with bound query objects)

■    Data-oriented web pages

■    Reports and the report catalogs

■    Dues billing run definitions